
import { defineStore } from 'pinia'
import { login, logout, getInfo } from '@/apis/user.ts'
import { getToken, setToken, removeToken } from '@/utils/auth'
export const useUserStore = defineStore('user', {
  state: () => ({
    // token: getToken(),
    token: '',
    name: '',
    avatar: '',
    introduction: '',
    roles: []
  }),
  getters: {
    // roles: (state) => state.roles
  },
  actions: {
    // user login
    login(userInfo) {
      const { username, password } = userInfo
      return new Promise((resolve, reject) => {
        login({ username: username.trim(), password: password }).then(response => {
          const { data } = response
          // commit('SET_TOKEN', data.token)
          this.token = data.token
          setToken(data.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

    // // get user info
    // getInfo({ commit, state }) {
    //   return new Promise((resolve, reject) => {
    //     getInfo(state.token).then(response => {
    //       const { data } = response

    //       if (!data) {
    //         reject('Verification failed, please Login again.')
    //       }

    //       const { roles, name, avatar, introduction } = data

    //       // roles must be a non-empty array
    //       if (!roles || roles.length <= 0) {
    //         reject('getInfo: roles must be a non-null array!')
    //       }

    //       commit('SET_ROLES', roles)
    //       commit('SET_NAME', name)
    //       commit('SET_AVATAR', avatar)
    //       commit('SET_INTRODUCTION', introduction)
    //       resolve(data)
    //     }).catch(error => {
    //       reject(error)
    //     })
    //   })
    // },

    // // user logout
    // logout({ commit, state, dispatch }) {
    //   return new Promise((resolve, reject) => {
    //     logout(state.token).then(() => {
    //       commit('SET_TOKEN', '')
    //       commit('SET_ROLES', [])
    //       removeToken()
    //       resetRouter()

    //       // reset visited views and cached views
    //       // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
    //       dispatch('tagsView/delAllViews', null, { root: true })

    //       resolve()
    //     }).catch(error => {
    //       reject(error)
    //     })
    //   })
    // },

    // // remove token
    // resetToken({ commit }) {
    //   return new Promise(resolve => {
    //     commit('SET_TOKEN', '')
    //     commit('SET_ROLES', [])
    //     removeToken()
    //     resolve()
    //   })
    // },

  },
})